package cn.weiyang.dao;

import cn.weiyang.model.Emp;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Restrictions;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import java.sql.SQLException;
import java.util.List;

/**
 * 对员工表进行增删改查操作
 * Created by Administrator on 2017/7/14.
 */
public class EmpDaoImpl extends HibernateDaoSupport implements EmpDao {
    public void addEmp(Emp emp) {
        getHibernateTemplate().save(emp);
    }

    public void delEmp(int empid) {
        getHibernateTemplate().delete(empid);
    }

    public void updateEmp(Emp emp) {
        getHibernateTemplate().update(emp);
    }

    public Emp get(int empid) {
        return getHibernateTemplate().get(Emp.class,empid);
    }

    /**
     * 根据员工姓名模糊查询员工信息
     * @param emp
     * @return
     */
    public List<Emp> searchEmp(final Emp emp) {
        List<Emp> emps=getHibernateTemplate().executeFind(
                new HibernateCallback<Object>() {
                    public Object doInHibernate(Session session) throws HibernateException, SQLException {
                        //构建Criteria查询
                        Criteria criteria=session.createCriteria(Emp.class);
                        //如果传递的参数不为空
                        if(null!=emp){
                            //构造查询条件
                            if(emp.getEname()!=null&&!"".equals(emp.getEname())){
                                    criteria.add(Restrictions.like("ename",emp.getEname(), MatchMode.ANYWHERE));
                            }
                        }
                        return criteria.list();
                    }
                });
        return emps;
    }

    /**
     * 根据hql语句查询员工信息
     * @param hql
     * @return
     */
    public List<Emp> searchEmp(String hql) {
        return getHibernateTemplate().find(hql);
    }
}
